package com.library.config;

import org.springframework.context.annotation.Bean;
import org.springframework.context.annotation.Configuration;
import org.springframework.web.cors.CorsConfiguration;
import org.springframework.web.cors.UrlBasedCorsConfigurationSource;
import org.springframework.web.filter.CorsFilter;

/**
 * 跨域配置类：解决前后端分离架构中的跨域访问问题
 */
@Configuration
public class CorsConfig {

    /**
     * 配置跨域过滤器
     */
    @Bean
    public CorsFilter corsFilter() {
        // 1. 创建CORS配置对象
        CorsConfiguration config = new CorsConfiguration();

        // 2. 允许的来源（开发环境可以使用*，生产环境应指定具体域名）
        config.addAllowedOrigin("*");

        // 3. 允许的请求头（*表示允许所有请求头）
        config.addAllowedHeader("*");

        // 4. 允许的HTTP方法（GET, POST, PUT, DELETE等）
        config.addAllowedMethod("*");

        // 5. 是否允许携带Cookie（跨域请求中）
        config.setAllowCredentials(true);

        // 6. 预检请求的缓存时间（秒），减少预检请求次数
        config.setMaxAge(3600L);

        // 7. 配置URL映射，对所有路径生效
        UrlBasedCorsConfigurationSource source = new UrlBasedCorsConfigurationSource();
        source.registerCorsConfiguration("/**", config);

        // 8. 创建并返回CORS过滤器
        return new CorsFilter(source);
    }
}
